營建系的我:「地基不穩,房子蓋得多高都沒用阿~」
為了好好的學會ROS2怎麼使用,必須得先學會幾個概念:
前五項是我自己最常用到的基本功,不管事自己要建立一個專案或使用別人的專案,都得好好學會,至於剩下的就是看需求決定要使用的多深入了。絕對不是剩下的不重要!也很重要!只是我的鐵人賽會提的比較少,因為已經有很多前輩整理過教學了,我認為自己沒有必要也沒有強大到可以寫成教學~
那接下來我就會用自身經驗來介紹這些基本功~
先前提過,在安裝完ROS後,第一件要做的事情就是先確認環境變數有被添加。
而且是每一個新的terminal開啟後,都要做這件事,我以前很容易忘記,還以為哪裡出問題了...
source /opt/ros/foxy/setup.bash
或
. /opt/ros/foxy/setup.bash
call C:\dev\ros2\local_setup.bat
如果跟我一樣健忘可以把它加到shell的啟動腳本
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
下次開機後生效,但要注意,如果是在同一台電腦(非使用Docker)同時安裝兩個版本的ROS1&ROS2(如同時裝了ROS1 Noetic 和ROS2 Foxy),用同時將兩者的setup.bash加入啟動腳本中,terminal可能會搞不清楚要用哪個版本...
我自己後來固定Docker就沒遇過這種問題了
workspace是工作空間的意思,不過其實就是一個資料夾,裡面又包含了這些資料夾:
workspace_name
├── build //存放編譯暫存
├── install //存放執行檔,專案的setup.bash也在這
├── log //存放一些資訊或報錯
└── src //存放原始碼
4 directories, 0 files
,不過前三個在colcon build
後會自行產生。
新建一個新的工作空間的步驟是:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/ros/ros_tutorials.git -b foxy-devel #示範用packages
cd .. #回到前一層 ros2_ws
rosdep install -i --from-path src --rosdistro foxy -y #檢查依賴的程式庫
colcon build #編譯
#編譯完產生 build install log
最後!!!添加這個工作空間的環境變數
source install/local_setup.bash
注意事項:得在workspace層colcon build
,笨笨的我曾在/srccolcon build
,還有要記得source!!!!
packages可以是自己撰寫的或別人寫好的程式庫,放在/src底下,上面的例子是官方提供的ros_tutorials package,編譯和添加完環境變數後可以ros2 run turtlesim turtlesim_node
檢查小烏龜有沒有出現。
那想查詢某個package有哪些執行檔(executables)可以用,輸入以下指令:
ros2 pkg executables turtlesim
以turtlesim為例,裡面有4個執行檔可以用~
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
p.s.
那如果要自己撰寫packages可以用c++或Python編輯,在~/ros2_ws/src中輸入
ros2 pkg create --build-type ament_cmake --node-name my_node my_package //C++
ros2 pkg create --build-type ament_python --node-name my_node my_package //Python
細節就之後慢慢補上~~